home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…ch: Other People's Memory / ADC Developer CD (1993-03) (''Other People's Memory'')_iso / Dev.CD Mar 93.iso / Development Platforms / Apple II / Essentials / MPW IIGS Interfaces / PIIGSIncludes / MIDISynth.p < prev    next >
Encoding:
Text File  |  1992-02-26  |  6.7 KB  |  221 lines  |  [TEXT/MPS ]

  1. {********************************************
  2. ; File: MidiSynth.h
  3. ;
  4. ; Copyright Apple Computer, Inc. 1991
  5. ; All Rights Reserved
  6. ;
  7. ********************************************}
  8. Unit MIDISynth;
  9.  
  10. Interface
  11. Uses
  12.     Types;
  13.  
  14. Const
  15.     { Error Codes }
  16.     msAlreadyStarted = $2301;        { MidiSynth already started. }
  17.     msNotStarted = $2302;            { MidiSynth never started. }
  18.     msNoDPMem = $2303;                { Can't get direct page memory. }
  19.     msNoMemBlock = $2304;            { Can't get memory block. }
  20.     msNoMiscTool = $2305;            { Misc Tools not started. }
  21.     msNoSoundTool = $2306;            { Sound Tools not started. }
  22.     msGenInUse = $2307;                { Ensoniq generator in use. }
  23.     msBadPortNum = $2308;            { Illegal port number. }
  24.     msPortBusy = $2309;                { Port is busy. }
  25.     msParamRangeErr = $230a;        { Parameter range error. }
  26.     msMsgQueueFull = $230b;            { Message queue full. }
  27.     msRecBufFull = $230c;            { Rec buffer is full. }
  28.     msOutputDisabled = $230d;        { MIDI output disabled. }
  29.     msMessageError = $230e;            { Message error. }
  30.     msOutputBufFull = $230f;        { MIDI output buffer is full. }
  31.     msDriverNotStarted = $2310;        { Driver not started. }
  32.     msDriverAlreadySet = $2311;        { Driver already set. }
  33.     msDevNotAvail = $2380;            { the requested device is not available }
  34.     msDevSlotBusy = $2381;            { requested slot is already in use }
  35.     msDevBusy = $2382;                { the requested device is already in use }
  36.     msDevOverrun = $2383;            { device overrun by incoming MIDI data }
  37.     msDevNoConnect = $2384;            { no connection to MIDI }
  38.     msDevReadErr = $2385;            { framing error in received MIDI data }
  39.     msDevVersion = $2386;            { ROM version is incompatible with device driver }
  40.     msDevIntHndlr = $2387;            { conflicting interrupt handler is installed }
  41.  
  42. Type
  43.     { record definitions }
  44.     msDirectPageHndl = ^msDirectPagePtr;
  45.     msDirectPagePtr = ^msDirectPage;
  46.     msDirectPage = Record
  47.         reserved1 : Array [0..$0b] of PackedByte;
  48.         MpacketStat : Integer;
  49.         MpacketData1 : Integer;
  50.         MpacketData2 : Integer;
  51.         SeqClockFrac : PackedByte;
  52.         SeqClockInt : LongInt;
  53.         reserved2 : Array [$17..$30] of PackedByte;
  54.         SeqItemStat : PackedByte;
  55.         SeqItemData1 : PackedByte;
  56.         SeqItemData2 : PackedByte;
  57.         reserved3 : Array [$34..$3e] of PackedByte;
  58.         MetroVol : PackedByte;
  59.         reserved4 : Array [$40..$e3] of PackedByte;
  60.         MetroFreq : PackedByte;
  61.         reserved5 : Array [$e6..$e9] of PackedByte;
  62.         SeqItemTrack : PackedByte;
  63.         reserved6 : PackedByte;
  64.         PacketBytes : PackedByte;
  65.         reserved7 : Array [$ed..$100] of PackedByte;
  66.     end;
  67.  
  68.     GetMSDataOutputRecHndl = ^GetMSDataOutputRecPtr;
  69.     GetMSDataOutputRecPtr = ^GetMSDataOutputRec;
  70.     GetMSDataOutputRec = Record
  71.         directPage : msDirectPagePtr;
  72.         reserved : LongInt;
  73.     End;
  74.  
  75.     MeasureRecHndl = ^MeasureRecPtr;
  76.     MeasureRecPtr = ^MeasureRec;
  77.     MeasureRec = Record
  78.         measureNumber : Integer;
  79.         beatNumber : Integer;
  80.         msRemainder : Integer;
  81.     End;
  82.  
  83.     CallBackRecHndl = ^CallBackRecPtr;
  84.     CallBackRecPtr = ^CallBackRec;
  85.     CallBackRec = Record
  86.         EndSeq : procptr;
  87.         UserMeter : procptr;
  88.         Mstart : procptr;
  89.         Mstop : procptr;
  90.         PacketIn : procptr;
  91.         SeqEvent : procptr;
  92.         SysEx : procptr;
  93.         PacketOut : procptr;
  94.         PgmChange : procptr;
  95.         Mcontinue : procptr;
  96.         SMarker : procptr;
  97.         RecBufFull : procptr;
  98.         Reserved1 : procptr;
  99.         Reserved2 : procptr;
  100.     End;
  101.  
  102.     SeqPlayRecHndl = ^SeqPlayRecPtr;
  103.     SeqPlayRecPtr = ^SeqPlayRec;
  104.     SeqPlayRec = Record
  105.         PbufStart : ptr;
  106.         Reserved : Longint;
  107.         RbufStart : ptr;
  108.         RbufEnd : ptr;
  109.         SeqFlags : Integer;
  110.         theClock : Longint;
  111.     End;
  112.  
  113.     EnvelopeRecHndl = ^EnvelopeRecPtr;
  114.     EnvelopeRecPtr = ^EnvelopeRec;
  115.     EnvelopeRec = Record
  116.         AttackLevel : PackedByte;
  117.         AttackRate : PackedByte;
  118.         Decay1Level : PackedByte;
  119.         Decay1Rate : PackedByte;
  120.         Decay2Level : PackedByte;
  121.         Decay2Rate : PackedByte;
  122.         SustainLevel : PackedByte;
  123.         Decay3Rate : PackedByte;
  124.         Release1Level : PackedByte;
  125.         Release1Rate : PackedByte;
  126.         Release2Level : PackedByte;
  127.         Release2Rate : PackedByte;
  128.         Release3Rate : PackedByte;
  129.         DecayGain : PackedByte;
  130.         VelocityGain : PackedByte;
  131.         PitchBendRange : PackedByte;
  132.     End;
  133.  
  134.     WavelistRecHndl = ^WavelistRecPtr;
  135.     WavelistRecPtr = ^WavelistRec;
  136.     WavelistRec = Record
  137.         TopKey : PackedByte;
  138.         OscConfig : PackedByte;
  139.         Stereo : PackedByte;
  140.         Detune : PackedByte;
  141.         WaveAddrA : PackedByte;
  142.         WaveSizeA : PackedByte;
  143.         VolumeA : PackedByte;
  144.         OctaveA : PackedByte;
  145.         SemitoneA : PackedByte;
  146.         FindTuneA : PackedByte;
  147.         WavAddrB : PackedByte;
  148.         WaveSizeB : PackedByte;
  149.         VolumeB : PackedByte;
  150.         OctaveB : PackedByte;
  151.         SemitoneB : PackedByte;
  152.         FineTuneB : PackedByte;
  153.     End;
  154.  
  155.     InstrumentRecHndl = ^InstrumentRecPtr;
  156.     InstrumentRecPtr = ^InstrumentRec;
  157.     InstrumentRec = Record
  158.         gen1EnvRec : EnvelopeRec;
  159.         gen1WaveRecs : Array[1..8] of WavelistRec;
  160.         gen2EnvRec : EnvelopeRec;
  161.         gen2WaveRecs : Array [1..8] of WavelistRec;
  162.     End;
  163.  
  164.     SeqItemRecHndl = ^SeqItemRecPtr;
  165.     SeqItemRecPtr = ^SeqItemRec;
  166.     SeqItemRec = Record
  167.         TrackNum : PackedByte;
  168.         TimeStampHigh : PackedByte;
  169.         TimeStampLow : PackedByte;
  170.         TimeStampMid : PackedByte;
  171.         DataByteCount : PackedByte;
  172.         MIDIStat : PackedByte;
  173.         DataByte1 : PackedByte;
  174.         DataByte2 : PackedByte;
  175.     end;
  176.  
  177. { available calls }
  178. Procedure MSBootInit;
  179. Procedure MSStartUp;
  180. Procedure MSShutDown;
  181. Function MSVersion : Integer;
  182. Procedure MSReset;
  183. Function MSStatus : Boolean;
  184.  
  185. Function GetMSData : GetMSDataOutputRec;
  186. Procedure SetCallBack(buffer : CallBackRecPtr);
  187. Procedure MSSuspend;
  188. Procedure MSResume;
  189. Procedure InitMIDIDriver(slot, internal, userID : Integer; driver : procptr);
  190. Procedure RemoveMIDIDriver;
  191. Procedure SetMIDIPort(inputDisable, outputDisable : integer);
  192. Procedure SetMIDIMode(mode : integer);
  193. Procedure SetBasicChannel(channel : Integer);
  194. Procedure SetVelComp(velocity : Integer);
  195. Procedure SysExOut(message : ptr; delay : integer; monitor : procptr);
  196. Procedure SetInstrument(inst : InstrumentRecPtr; number : integer);
  197. Procedure PlayNote(channel, noteNum, volume : integer);
  198. Procedure StopNote(channel, noteNum : Integer);
  199. Procedure MIDIMessage(destination, numBytes, message, dataByte1, dataByte2 : integer);
  200. Procedure KillAllNotes;
  201. Procedure SetTuningTable(table : ptr);
  202. Procedure GetTuningTable(table : ptr);
  203. Procedure SetTempo(tempo : integer);
  204. Procedure SetBeat(duration : integer);
  205. Procedure SetRecTrack(trackNum : integer);
  206. Procedure SetPlayTrack(trackNum, playState : integer);
  207. Procedure SeqPlayer(sequence : SeqPlayRecPtr);
  208. Procedure SetMetro(volume, frequency : Integer; wave : ptr);
  209. Procedure TrackToChannel(trackNum, channel : Integer);
  210. Procedure SetTrackOut(trackNum, path : Integer);
  211. Procedure Merge(buffer1, buffer2 : ptr);
  212. Function Locate(timeStamp : longint; seqBuffer : ptr) : SeqItemRecPtr;
  213. Function LocateEnd(seqBuffer : ptr) : ptr;
  214. Procedure DeleteTrack(trackNum : Integer; sequence : ptr);
  215. Function ConvertToTime(ticksPerBeat, beats, beatNum, measure : Integer) : Longint;
  216. Function ConvertToMeasure(ticksPerBeat, beats : Integer; seqClockTics : Longint) : MeasureRec ;
  217.  
  218. Implementation
  219.  
  220. End.
  221.